Дополнительные поля это многоцелевой инструмент, с помощью которого вы можете улучшить свой сайт оригинальными и нестандартными решениями. Часто системный лимит количества дополнительных полей у материалов для пользователей слишком мал. Из-за этого приходится реализовывать многие идеи на сайте иначе или полностью отказываться от них. uScript понимает вас и рад представить вам скрипт для решения этого вопроса.
Что скрипт может дать? К примеру, на кино-сайте у вас появится возможность указать полную информацию о фильме, его режиссере, сценаристах, актерах, годе выпуска. Если у вас сайт-журнал, дополнительные поля помогут вам перевести его на основные языки мира, таким образом значительно расширив аудиторию.
Автор скрипта – Новский Александр, победивший в конкурсе реализации PHP скриптов.









<script type="text/javascript">
$.ajax({
type: "GET",
url: "/php/fields/readdops.php?id=$ID$&mod=$MODULE_ID$",
success: function(html) {
$("#additional_fields").empty();
$("#additional_fields").append(html);
}
});
</script><div id="additional_fields"></div>
<?if($PAGE_ID$='add' || $PAGE_ID$='edit')?>
<script type='text/javascript'>
$("#nwM22").after('<tr><td colspan="2"><div id="additional_fields"><input onclick="dopsadd()" type="button" value="Добавить поля"/></div></td></tr>');
function dopsadd()
{
adres1 = location.href.split('/');
ext1 = adres1[adres1.length - 1];
adres2 = ext1.split('-');
ext2 = adres2[adres2.length - 2];
if (ext1 != 0) {
var idm = "?id=" + ext2 + "&mod=$MODULE_ID$";
} else {
var idm = "";
}
$.ajax({
type: "GET",
url: "/php/fields/naredakt.php" + idm,
success: function(html) {
$("#additional_fields").empty();
$("#additional_fields").append(html);
}
});
}
$("#addEntForm").submit(function () {
setTimeout(function () {
var f = true;
if (document.getElementById('chtitles')) {
$("div.myWinSuccess").each(function () {
if (this.innerHTML.indexOf("успешно") !== -1) this.innerHTML += '';
});
}
$("a").each(function () {
if (this.innerHTML.indexOf("Перейти на страницу материала") !== -1) {
$("div[class*='xt-close']").css("display", "none");
adres = this.href.split('/');
ext = adres[adres.length - 1];
ext2 = ext.split('-');
ext3 = ext2[ext2.length - 1];
var fields = $(":input[name$='mess']").serializeArray();
$("#serialize").empty();
jQuery.each(fields, function(i, field){
$("#serialize").append(field.value);
});
if ($("#serialize").text() != 0){
$.ajax({
url: encodeURI('/php/fields/savefiledops.php?id=' + ext3 + '&mod=$MODULE_ID$&cid=' + ext),
type: "POST",
data: $("#chtitles").serialize(),
timeout: 10000,
dataType: "json",
success: function (data) {
$("#loaderphp").html(data.SCRIPTDATA);
$("div[class*='xt-close']").css("display", "block");
}
});
} else {
$.post("/php/fields/deletedops.php", {
mod: "$MODULE_ID$",
id: ext3,
cid: ext
}, function (data) {
if (data) {
$('#loaderphp').html(data.SCRIPTDATA);
$("div[class*='xt-close']").css("display", "block");
}
}, "json")
}
f = false;
}
});
f && setTimeout(arguments.callee, 100);
}, 100);
});
</script>
<?endif?>
<?if($PAGE_ID$='add' || $PAGE_ID$='edit')?>
<script type='text/javascript'>
$("#blM22").after('<tr><td colspan="2"><div id="additional_fields"><input onclick="dopsadd()" type="button" value="Добавить поля"/></div></td></tr>');
function dopsadd()
{
adres1 = location.href.split('/');
ext1 = adres1[adres1.length - 1];
adres2 = ext1.split('-');
ext2 = adres2[adres2.length - 2];
if (ext1 != 0) {
var idm = "?id=" + ext2 + "&mod=$MODULE_ID$";
} else {
var idm = "";
}
$.ajax({
type: "GET",
url: "/php/fields/naredakt.php" + idm,
success: function(html) {
$("#additional_fields").empty();
$("#additional_fields").append(html);
}
});
}
$("#addEntForm").submit(function () {
setTimeout(function () {
var f = true;
if (document.getElementById('chtitles')) {
$("div.myWinSuccess").each(function () {
if (this.innerHTML.indexOf("успешно") !== -1) this.innerHTML += '';
});
}
$("a").each(function () {
if (this.innerHTML.indexOf("Перейти на страницу материала") !== -1) {
$("div[class*='xt-close']").css("display", "none");
adres = this.href.split('/');
ext = adres[adres.length - 1];
ext2 = ext.split('-');
ext3 = ext2[ext2.length - 1];
var fields = $(":input[name$='mess']").serializeArray();
$("#serialize").empty();
jQuery.each(fields, function(i, field){
$("#serialize").append(field.value);
});
if ($("#serialize").text() != 0){
$.ajax({
url: encodeURI('/php/fields/savefiledops.php?id=' + ext3 + '&mod=$MODULE_ID$&cid=' + ext),
type: "POST",
data: $("#chtitles").serialize(),
timeout: 10000,
dataType: "json",
success: function (data) {
$("#loaderphp").html(data.SCRIPTDATA);
$("div[class*='xt-close']").css("display", "block");
}
});
} else {
$.post("/php/fields/deletedops.php", {
mod: "$MODULE_ID$",
id: ext3,
cid: ext
}, function (data) {
if (data) {
$('#loaderphp').html(data.SCRIPTDATA);
$("div[class*='xt-close']").css("display", "block");
}
}, "json")
}
f = false;
}
});
f && setTimeout(arguments.callee, 100);
}, 100);
});
</script>
<?endif?>
<script type='text/javascript'>
$("#ldM6").after('<tr><td colspan="2"><div id="additional_fields"><input onclick="dopsadd()" type="button" value="Добавить поля"/></div></td></tr>');
function dopsadd()
{
adres1 = location.href.split('/');
ext1 = adres1[adres1.length - 1];
adres2 = ext1.split('-');
ext2 = adres2[adres2.length - 2];
if (ext1 != 0) {
var idm = "?id=" + ext2 + "&mod=$MODULE_ID$";
} else {
var idm = "";
}
$.ajax({
type: "GET",
url: "/php/fields/naredakt.php" + idm,
success: function(html) {
$("#additional_fields").empty();
$("#additional_fields").append(html);
}
});
}
$("#addEntForm").submit(function () {
setTimeout(function () {
var f = true;
if (document.getElementById('chtitles')) {
$("div.myWinSuccess").each(function () {
if (this.innerHTML.indexOf("успешно") !== -1) this.innerHTML += '';
});
}
$("a").each(function () {
if (this.innerHTML.indexOf("Перейти на страницу материала") !== -1) {
$("div[class*='xt-close']").css("display", "none");
adres = this.href.split('/');
ext = adres[adres.length - 1];
ext2 = ext.split('-');
ext3 = ext2[ext2.length - 1];
var fields = $(":input[name$='mess']").serializeArray();
$("#serialize").empty();
jQuery.each(fields, function(i, field){
$("#serialize").append(field.value);
});
if ($("#serialize").text() != 0){
$.ajax({
url: encodeURI('/php/fields/savefiledops.php?id=' + ext3 + '&mod=$MODULE_ID$&cid=' + ext),
type: "POST",
data: $("#chtitles").serialize(),
timeout: 10000,
dataType: "json",
success: function (data) {
$("#loaderphp").html(data.SCRIPTDATA);
$("div[class*='xt-close']").css("display", "block");
}
});
} else {
$.post("/php/fields/deletedops.php", {
mod: "$MODULE_ID$",
id: ext3,
cid: ext
}, function (data) {
if (data) {
$('#loaderphp').html(data.SCRIPTDATA);
$("div[class*='xt-close']").css("display", "block");
}
}, "json")
}
f = false;
}
});
f && setTimeout(arguments.callee, 100);
}, 100);
});
</script>
<script type='text/javascript'>
$(".ucoz-editor-bottom").after('<tr><td colspan="2"><div id="additional_fields"><input onclick="dopsadd()" type="button" value="Добавить поля"/></div></td></tr>');
function dopsadd()
{
adres1 = location.href.split('/');
ext1 = adres1[adres1.length - 1];
adres2 = ext1.split('-');
ext2 = adres2[adres2.length - 2];
if (ext1 != 0) {
var idm = "?id=" + ext2 + "&mod=$MODULE_ID$";
} else {
var idm = "";
}
$.ajax({
type: "GET",
url: "/php/fields/naredakt.php" + idm,
success: function(html) {
$("#additional_fields").empty();
$("#additional_fields").append(html);
}
});
}
$("#addEntForm").submit(function () {
setTimeout(function () {
var f = true;
if (document.getElementById('chtitles')) {
$("div.myWinSuccess").each(function () {
if (this.innerHTML.indexOf("успешно") !== -1) this.innerHTML += '';
});
}
$("a").each(function () {
if (this.innerHTML.indexOf("Перейти на страницу материала") !== -1) {
$("div[class*='xt-close']").css("display", "none");
adres = this.href.split('/');
ext = adres[adres.length - 1];
ext2 = ext.split('-');
ext3 = ext2[ext2.length - 1];
var fields = $(":input[name$='mess']").serializeArray();
$("#serialize").empty();
jQuery.each(fields, function(i, field){
$("#serialize").append(field.value);
});
if ($("#serialize").text() != 0){
$.ajax({
url: encodeURI('/php/fields/savefiledops.php?id=' + ext3 + '&mod=$MODULE_ID$&cid=' + ext),
type: "POST",
data: $("#chtitles").serialize(),
timeout: 10000,
dataType: "json",
success: function (data) {
$("#loaderphp").html(data.SCRIPTDATA);
$("div[class*='xt-close']").css("display", "block");
}
});
} else {
$.post("/php/fields/deletedops.php", {
mod: "$MODULE_ID$",
id: ext3,
cid: ext
}, function (data) {
if (data) {
$('#loaderphp').html(data.SCRIPTDATA);
$("div[class*='xt-close']").css("display", "block");
}
}, "json")
}
f = false;
}
});
f && setTimeout(arguments.callee, 100);
}, 100);
});
</script>
Далее, перейдите в шаблон «Форма добавления/редактирования материала», найдите в этом шаблоне код:
<?if($MESSAGE_FL$)?> <tr><td class="manTd2" colspan="2">$MESSAGE_FL$</td></tr> <tr><td height="10" class="manTdSep" colspan="2"><hr class="manHr" /></td></tr> <?endif?>и после этого кода разместите следующее:
<tr><td class="manTd2" colspan="2"><div id="additional_fields"></div></td></tr> <tr><td height="10" class="manTdSep" colspan="2"><hr class="manHr" /></td></tr>
<select id="module">
<option value="load">Каталог файлов</option>
<option value="news">Новости</option>
<option value="blog">Блог</option>
<option value="stuff">Онлайн-игры</option>
</select>
<input type="button" onClick="mod()" value="Выбрать модуль"><div id="phpdivmain"></div>
<script type="text/javascript">
function mod() {
$('#phpdivmain').html('<img src="/.s/img/wd/6/ajax.gif" />');
var moduleop = $("#module :selected").val();
$.ajax({
url: "/php/fields/admindops.php",
type: "GET",
data: "mod="+moduleop,
timeout: 12000,
success: function(data){
if (data) $('#phpdivmain').html(data);
$.getScript("/.s/src/jquery-ui/jquery-ui.min.js", function(){
$( "#sortable1, #sortable2" ).sortable({
connectWith: ".connectedSortable"
}).disableSelection();
});
}
});
}
function save () {
var order = $("#sortable1").sortable("serialize") + '&update=update&';
var order2 = $("#sortable2").sortable("serialize");
var mod = $("#opred").html();
jQuery.ajax({
url: "/php/fields/admindops.php?mod="+mod,
type: "POST",
data: order + order2,
timeout: 12000,
dataType: "html",
success: function(data){
if (data) $('#phpdivmain').html(data);
$( "#sortable1, #sortable2" ).sortable({
connectWith: ".connectedSortable",
placeholder: "ui-state-highlight1"
}).disableSelection();
$( "#sortable1" ).sortable({ opacity: 0.6 });
}
});
}
function addtext () {
$("#sortable2").append('<li class="ui-state-highlight" id="name_text"><div class="ui-state-highlight3"></div><input value="text" style="width:95%" type="text" /></li>')
}
function addarea () {
$("#sortable2").append('<li class="ui-state-highlight" id="name_textarea"><div class="ui-state-highlight3"></div><textarea style="width:95%"></textarea></li>')
}
</script>
При этом галочка у пункта "Заменять переводы строк тегом <BR>" должна быть неактивна.
Также можете отметить галочками группы, которым будет доступна эта страницы для просмотра. Однако напомним, что сохранение полей доступно только администратору (ID указывается в файле конфигурации).
<select id="module">
<option value="load">Каталог файлов</option>
<option value="news">Новости</option>
<option value="blog">Блог</option>
<option value="stuff">Онлайн-игры</option>
</select><input type="button" onClick="mod()" value="Перейти">
<script type="text/javascript">
function mod() {
$('#phpdivmain').html('<img src="/.s/img/wd/6/ajax.gif" />');
var moduleop = $("#module :selected").val();
jQuery.ajax({
url: "/php/fields/editdops.php",
type: "GET",
data: "mod=" + moduleop,
timeout: 12000,
success: function(data){
if (data) $('#phpdivmain').html(data);
}
});
}
</script><div id="phpdivmain"></div>
Опять же, галочка у пункта "Заменять переводы строк тегом <BR>" должна быть неактивна.
$site – адрес вашего сайта в пуникоде (если у вас сайт в кириллическом домене) без "http:/www." и слеша в конце. Конвертация в Punycode доступна по адресу: http://faq.ucoz.ru/punycode/$site2 – если у вас сайт в кириллическом домене, то здесь указать адрес кириллическими символами, например сайт.рф $adminid – ID администратора, который имеет доступ к редактированию названий доп. полей и их сортировке. Допускается указать только одного$moderid – ID пользователей (модераторов), которым разрешено редактировать дополнительные поля. Перечислить через запятую, пример: 100, 200$apikey – API key из админ-панели, например "335HyufTrbGe042W". Если не используете ключ, то нужно оставить поле пустымДополнительная информацияи замените на нужный вам текст.
blog.txt – модуль "блог";news.txt – модуль "новости сайта";load.txt – модуль "каталог файлов";stuff.txt – модуль "онлайн-игры".a area1 Дополнительное поле 1 a text2 Дополнительное поле 2 a area3 Дополнительное поле 3 a text4 Дополнительное поле 4 a area5 Дополнительное поле 5 n area6 Дополнительное поле 6 n area7 Дополнительное поле 7 n text8 Дополнительное поле 8 n text9 Дополнительное поле 9 n text10 Дополнительное поле 10Добавляем следующим принципом (сохраняя при этом табуляцию):
n area11 Дополнительное поле 11 n text12 Дополнительное поле 12 n text13 Дополнительное поле 13 n text14 Дополнительное поле 14выделенное зеленым цветом является типом расширенного поля (textarea), а красного цвета – типом обычного поля (input type="text"). Серым – ID-поля, который должен быть уникальным.